﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Text.RegularExpressions;

using FrbaBus.Core;

namespace FrbaBus.Abm_Recorrido
{

    public partial class RecorridoCreacion1 : Form
    {
        public RecorridoCreacion1()
        {
            InitializeComponent();
        }

        public bool origen = false;

    private void button1_Click(object sender, EventArgs e)

        {
            origen = true;
            Abm_Recorrido.BusquedaCiudad frm = new Abm_Recorrido.BusquedaCiudad(this);
            frm.ShowDialog(this);
        }



    private void button2_Click(object sender, EventArgs e)
    {
        origen = false;
        Abm_Recorrido.BusquedaCiudad frm = new Abm_Recorrido.BusquedaCiudad(this);
        frm.ShowDialog(this);
    }



        private void RecorridoCreacion1_Activated(object sender, EventArgs e)
        {
        
            comboBox3.Items.Clear();
            comboBox3.Text = "";
            DBManager db = new DBManager();
            SqlCommand consulta = new SqlCommand("select Tipo_Servicio from ALL_IN.Tipo_Servicio");
            SQLResponse r = db.executeQuery(consulta);
            SqlCommand consulta2 = new SqlCommand("select count (*) from ALL_IN.Tipo_Servicio");
            SQLResponse r2 = db.executeQuery(consulta2);
            int valor = (int)r2.result.Rows[0][0];
            for (int i = 0; i < valor; i++)
            {
                comboBox3.Items.Add(r.result.Rows[i][0].ToString());
            }
        }

        public class Foo
        {
            public static int validacion = 1;
        }

        private void btnCrear_Click(object sender, EventArgs e)
        {
            Foo.validacion = 1;
            // VALIDAR QUE HAY DATOS EN TODOS LOS CAMPOS
            DBManager db = new DBManager();
            bool valor2;
            if (textBox3.Text == "" || textBox4.Text == "" || comboBox3.Text == "" || numericUpDown1.Text == "" || numericUpDown2.Text == "")
            {
                MessageBox.Show("Todos los campos deben ser completados");
                Foo.validacion = 0;
            }

            // VALIDAR QUE EL ORIGEN ES UNA CIUDAD VALIDA
            if (textBox3.Text != "" )
            {
                SqlCommand consulta5 = new SqlCommand("select ALL_IN.existeCiudadHabilitada('" + textBox3.Text + "')");
                SQLResponse r5 = db.executeQuery(consulta5);
                valor2 = (bool)r5.result.Rows[0][0];
                if (valor2 == false)
                {
                    MessageBox.Show("Seleccione una ciudad valida para el origen");
                    Foo.validacion = 0;
                }
            }

            // VALIDAR QUE EL DESTINO ES UNA CIUDAD VALIDA
            if (textBox4.Text != "" )
            {
                SqlCommand consulta6 = new SqlCommand("select ALL_IN.existeCiudadHabilitada('" + textBox4.Text + "')");
                SQLResponse r6 = db.executeQuery(consulta6);
                valor2 = (bool)r6.result.Rows[0][0];
                if (valor2 == false)
                {
                    MessageBox.Show("Seleccione una ciudad valida para el destino");
                    Foo.validacion = 0;
                }
            }


            if (Foo.validacion == 1)
            {
                // SI UN RECORRIDO CON DICHAS CARACTERISTICAS YA EXISTE SE INFORMA SU ID
                SqlCommand consulta = new SqlCommand("select ALL_IN.existeRecorrido('" + textBox3.Text + "','" + textBox4.Text + "','"
                + comboBox3.Text + "','" + numericUpDown1.Text.Replace(",", ".") + "','" + numericUpDown2.Text.Replace(",", ".") + "')");
                SQLResponse r = db.executeQuery(consulta);
                valor2 = (bool)r.result.Rows[0][0];
                if ( valor2 == true )
                {
                    SqlCommand consulta2 = new SqlCommand("select ID_Recorrido from ALL_IN.Recorrido where Origen='" + textBox3.Text + "' AND Destino='" +
                        textBox4.Text + "' AND Tipo_Servicio='" + comboBox3.Text + "' AND Precio_Pasaje_Base='" + numericUpDown1.Text.Replace(",", ".") + "' AND Precio_Kg_Base ='"
                        + numericUpDown2.Text.Replace(",", ".") + "' AND Habilitado=1");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    MessageBox.Show("Ya existe un Recorrido identico con ID_Recorrido=" + r2.result.Rows[0][0]);
                    this.Close();
                }
                else
                {
                    // CREACION DE NUEVO RECORRIDO
                    SqlCommand consulta4 = new SqlCommand("select max(ID_Recorrido) from ALL_IN.Recorrido");
                    SQLResponse r4 = db.executeQuery(consulta4);
                    int valor = System.Convert.ToInt32(r4.result.Rows[0][0]);
                    valor++;

                    SqlCommand consulta3 = new SqlCommand(" insert into ALL_IN.Recorrido(ID_Recorrido,Origen,Destino,Tipo_Servicio,Precio_Pasaje_Base,Precio_Kg_Base) values('" +
                        valor.ToString() + "','" + textBox3.Text + "','" + textBox4.Text + "','" + comboBox3.Text + "','" + numericUpDown1.Text.Replace(",", ".") + "','" + numericUpDown2.Text.Replace(",", ".") + "')");
                    SQLResponse r3 = db.executeQuery(consulta3);
                    MessageBox.Show("Se ha creado un recorrido con ID=" + valor.ToString());
                    this.Close();
                }
            }
        }
/*
        // CONTROLES DE INGRESOS DE DATOS EN TEXTBOX NUMERICOS
        private void Numerical_TextBox_Check(object sender, KeyPressEventArgs e)
        {
            // only allow numerical digits
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
            {
                e.Handled = true;
            }
            // only allow one decimal point
            if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
            {
                e.Handled = true;
            }
            // oly allow 2 decimal digits
            if (Regex.IsMatch(textBox1.Text, @"\.\d\d") && !char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void Numerical_TextBox_Check2(object sender, KeyPressEventArgs e)
        {
            // only allow numerical digits
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
            {
                e.Handled = true;
            }
            // only allow one decimal point
            if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1 && (sender as TextBox).Text.IndexOf(',') == -1)
            {
                e.Handled = true;
            }
            // oly allow 2 decimal digits
            if (Regex.IsMatch(textBox2.Text, @"\.\d\d") && !char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }*/

        private void RecorridoCreacion1_Load(object sender, EventArgs e)
        {

        }



    }


}
